dp 计数.
首先可以对坐标离散化,记录一下离散化后的每个点代表原来数列中的几个点,方便后续计算方案数.
考虑 $\max(l,r) = h$ 的限制,等价于对于 $l\le i\le r$ 的 $i$ ,都有 $a_i\le h$ ,并且 $[l,r]$ 内至少有一个 $a_i=h$ .
可以对每个点计算出它能取到的上限 $up_i$ ,这个值其实就是所有覆盖它的区间中最小的 $h$ .
可以发现, $[l,r]$ 内至少有一个 $a_i=h$ 的限制,因为 $[l,r]$ 内一定有 $up_i\le h$ ,所以只能由 $up_i=h$ 的 $a_i$ 来满足.
对于所有 $h$ 相同的限制,我们将它们以及 $up_i=h$ 的点一起拿出来单独计算对方案数的贡献.
这需要满足每个区间中,至少有一个 $a_i$ 取到了上限 $a_i=h$ .
如果一个区间完全覆盖了另一个区间,可以直接把大区间的限制去掉,那么剩下的区间一定都是没有包含关系的.
我们把这些区间按照左端点从小到大排序.
设 $dp(i,j)$ 表示确定了前 $i$ 个点是否取到上限,前 $j$ 个区间已经满足限制,但第 $j+1$ 个区间不满足限制的方案数.
最后还要乘上没有被任何区间限制的点的贡献.
时间复杂度 $O(Tm^2)$ .
1 |
|